﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
using System.Configuration;
using InformesYEstadisticas.EntidadesEstadisticas;

namespace InformesYEstadisticas.AccesoBD
{
    public class RankingInstituciones
    {
        public List<EntidadInstitucion>  obtenerRanking(DateTime fechaDesde, DateTime fechaHasta)
        {
            List<EntidadInstitucion> lista = null;
            string strConexion = ConfigurationManager.ConnectionStrings[1].ToString();//.ConnectionString;
            SqlConnection conexion = new SqlConnection(strConexion);
            conexion.Open();
            try
            {
                SqlCommand sqlcmd = new SqlCommand("SELECT Atencion_Externa.idInstitucion, Institucion.nombreInstitucion, Count(Atencion_Externa.idInstitucion) AS Cantidad FROM Atencion_Externa INNER JOIN Institucion ON Atencion_Externa.idInstitucion = Institucion.idInstitucion WHERE Atencion_Externa.fechaHora BETWEEN CONVERT(datetime, @fechaDesde, 103) AND CONVERT(datetime, @fechaHasta, 103) GROUP BY Atencion_Externa.idInstitucion, Institucion.nombreInstitucion ORDER BY Cantidad desc", conexion);
                sqlcmd.Parameters.Add(new SqlParameter("@fechaDesde", fechaDesde));
                sqlcmd.Parameters.Add(new SqlParameter("@fechaHasta", fechaHasta));
                SqlDataReader dr = sqlcmd.ExecuteReader();

                lista  = new List<EntidadInstitucion>();
                while (dr.Read())
                {
                    EntidadInstitucion ei = new EntidadInstitucion();
                    ei.codigo = Convert.ToInt32(dr["idInstitucion"]);
                    ei.nombre = dr["nombreInstitucion"].ToString();
                    ei.cantidad = Convert.ToInt32(dr["Cantidad"]);
                    lista.Add(ei);


                    ei = null;
                }
            }
            catch (Exception ex)
            {

                throw ex;
            }
            finally
            {
                conexion.Close();
            }

            return lista;
        }
        }

    }

